更优美的python日志管理库Loguru | 您所在的位置:网站首页 › python log库 › 更优美的python日志管理库Loguru |
一、Loguru简介
Loguru的主旨就是让程序员能方便优美的实现日志记录。您还记得配置记录器的繁琐过程吗?因为对此感到厌烦?让我们看看以前python日志记录器的创建过程吧。 import logging #创建日志级别 logger = logging.getLogger(__name__) logger.setLevel(logging.INFO) #创建日志文件 handler_warn = logging.FileHandler('warning_log.txt') handler_warn.setLevel(logging.INFO) #定义日志格式 formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') handler_warn.setFormatter(formatter) #将日志处理程序记录到记录器 logger.addHandler(handler_warn)以上还是最简单的配置过程,是否感到很繁琐。确实如此,但是记录是每个应用程序的基础,并简化了调试过程。使用Loguru,您没有理由不从一开始就使用日志记录,这很简单。只需要引入loguru库即可,而且loguru的性能也非常好,因为Loguru的关键功能将以C语言实现,以实现最高速度。 from loguru import logger另外,该库旨在通过添加一堆有用的功能来减轻Python日志记录的痛苦,这些功能可以解决标准记录器的问题。在您的应用程序中使用日志应该是自动的,Loguru试图使其变得既愉快又强大。 二、Loguru安装安装方法很简单。 pip install loguru 三、Loguru使用 1、简单使用 from loguru import logger logger.debug("That's it, beautiful and simple logging!")结果显示彩色,非常的优美。 2、日志格式根据自己的需求配置日志格式,也非常简单,只需要简单配置即可完成。如下: import sys from loguru import logger #配置日志格式 logger.add(sys.stderr, format="{time} {level} {message}", filter="my_module", level="INFO") logger.info("That's it, beautiful and simple logging!") logger.debug("That's debug") logger.warning("That's warning")结果,不同的颜色显示: 3、日志文件如果要将记录的消息保存到文件,则只需使用字符串路径作为接收器。配置如下: logger.add("file_{time}.log")如果需要设置日志文件大小、删除较旧的日志文件或希望在关闭时压缩文件,并设置压缩格式,这些都可以进行配置,而且配置起来非常简单。如下: #rotation参数 logger.add("file_1.log", rotation="500 MB") # 设置日志文件大小 logger.add("file_2.log", rotation="12:00") # 中午12点创建日志文件 logger.add("file_3.log", rotation="1 week") # 一周创建一个日志文件 #retention参数 logger.add("file_X.log", retention="10 days") # 日志文件最长保留 10 天 #compression参数 logger.add("file_Y.log", compression="zip") # 日志文件压缩格式为ZIP 4、字符串格式化Loguru倾向于使用更优雅,更强大的{}格式%,日志记录功能实际上等效于str.format()。 logger.info("If you're using Python {}, prefer {feature} of course!", 3.6, feature="f-strings")结果: 5、Traceback捕获您是否曾经看到程序意外崩溃而没有在日志文件中看到任何内容?您是否注意到没有记录线程中发生的异常?这可以使用catch()装饰器/上下文管理器解决,该管理器可以确保将任何错误信息正确保存到logger中。配置如下: import sys from loguru import logger @logger.catch def my_function(x, y, z): # An error? It's caught anyway! return 1 / (x + y + z) my_function(1,-1,0)结果: 6、色彩斑斓的日志如果您的终端兼容,Loguru会自动为日志添加颜色。您可以通过使用接收器格式来自定义自己喜欢的样式。配置方式如下: logger.add(sys.stderr, colorize=True, format="{time} {message}",level="DEBUG")结果,DEBUG及以上的信息或被自定义显示样式。 7、异步写入日志logger默认情况下,添加到的所有接收器都是线程安全的。它们不是多进程安全的,但是您可以enqueue通过消息来确保日志的完整性。如果要异步记录,也可以使用相同的参数。 logger.add("somefile.log", enqueue=True) 8、序列化日志希望对日志进行序列化以便于解析或传递日志?使用该serialize参数,每条日志消息在发送到已配置的接收器之前将转换为JSON字符串。 logger.add(custom_sink_function, serialize=True) 9、配置日期格式 logger.add(sys.stderr, format="{time:YYYY-MM-DD at HH:mm:ss} | {level} | {message}",level="DEBUG") logger.info("If you're using Python {}, prefer {feature} of course!", 3.6, feature="f-strings") logger.debug("That's debug") logger.warning("That's warning")结果: 10、配置编码格式 logger.add(log_file_path, rotation="500 MB", encoding='utf8')还有更多的配置方法,详细请参考官方文档。 四、参考1、官方文档:https://loguru.readthedocs.io/en/stable/overview.html 2、官方github: https://github.com/Delgan/loguru |
CopyRight 2018-2019 实验室设备网 版权所有 |